<!DOCTYPE html>
<html lang="zh-CN">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>

<body>
  <!-- 
    foreach()与map()的区别
      1.forEach()返回值是undefined，不可以链式调用。
      2.map()返回一个新数组，原数组不会改变。
      3.没有办法终止或者跳出forEach()循环，除非抛出异常，所以想执行一个数组是否满足什么条件，返回布尔值，可以用一般的for循环实现，或者用Array.every()或者Array.some();
   -->
  <script>
    {
      // forEach 迭代遍历数组
      let arr = [1, 2, 3];
      arr.forEach(function (value, index, array) {
        console.log(`每个数组的元素${value}`);
        console.log(`每个数组的索引值${index}`);
        console.log(`要遍历的数组本身${array}`);
      });
    }; {
      let arr = [59, 30, 44, 60];
      let arr1 = arr.filter(function (value, index, array) { //参数:每个元素,索引值,素组本身。返回新数组
        return value >= 45;
      });
      console.log(arr1);
    }; {
      let arr = [65, 82, 48, 77, 100];
      let flag = arr.some(function (value, index, array) {
        //检测数组中的元素是否满足指定条件,返回值是布尔值,有则为true,没有则为false
        // 只要找到第一满足条件就终止查找了
        return value >= 20;
      });
      console.log(flag);
    }; {
      let arr = [29, 30, 45, 100, 22];
      let arr1 = arr.map(function (value, index, arrary) {
        // 处理之后返回新数组,不改变原来的数组
        return value + 10;
      });
      console.log(arr1);
    }; {
      let arr = [20, 30, 22];
      let flag = arr.every(function (value, index, arrary) {
        // 遍历每一项,当所有的值都为true,则返回true。否则为flase
        return value > 10;
      });
      console.log(flag);
    }
  </script>
</body>

</html>